package org.xtext.example.mydsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.example.mydsl.services.ComponentBasedSoftwareDevelopmentGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalComponentBasedSoftwareDevelopmentParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'import'", "'.'", "'.*'", "'between'", "'and'", "'alternation'", "','", "'leadsto'", "'causedby'", "'precedes'", "'follows'", "'::'", "'bind'", "'to'", "'instanceof'", "'component'", "'provides'", "'requires'", "'constraints'", "':'", "'interface '", "'('", "')'", "'datatype'", "'entity'", "'extends'", "'many'"
    };
    public static final int RULE_ID=4;
    public static final int T__40=40;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=6;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__12=12;
    public static final int T__38=38;
    public static final int T__11=11;
    public static final int T__39=39;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalComponentBasedSoftwareDevelopmentParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalComponentBasedSoftwareDevelopmentParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalComponentBasedSoftwareDevelopmentParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g"; }



     	private ComponentBasedSoftwareDevelopmentGrammarAccess grammarAccess;
     	
        public InternalComponentBasedSoftwareDevelopmentParser(TokenStream input, ComponentBasedSoftwareDevelopmentGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Main";	
       	}
       	
       	@Override
       	protected ComponentBasedSoftwareDevelopmentGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleMain"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:67:1: entryRuleMain returns [EObject current=null] : iv_ruleMain= ruleMain EOF ;
    public final EObject entryRuleMain() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMain = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:68:2: (iv_ruleMain= ruleMain EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:69:2: iv_ruleMain= ruleMain EOF
            {
             newCompositeNode(grammarAccess.getMainRule()); 
            pushFollow(FOLLOW_ruleMain_in_entryRuleMain75);
            iv_ruleMain=ruleMain();

            state._fsp--;

             current =iv_ruleMain; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMain85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMain"


    // $ANTLR start "ruleMain"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:76:1: ruleMain returns [EObject current=null] : ( (lv_elements_0_0= ruleAbstractElement ) )* ;
    public final EObject ruleMain() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:79:28: ( ( (lv_elements_0_0= ruleAbstractElement ) )* )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:80:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:80:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID||LA1_0==11||LA1_0==14||LA1_0==26||LA1_0==29||LA1_0==34||(LA1_0>=37 && LA1_0<=38)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:81:1: (lv_elements_0_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:81:1: (lv_elements_0_0= ruleAbstractElement )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:82:3: lv_elements_0_0= ruleAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getMainAccess().getElementsAbstractElementParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractElement_in_ruleMain130);
            	    lv_elements_0_0=ruleAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getMainRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"AbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMain"


    // $ANTLR start "entryRuleAbstractElement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:106:1: entryRuleAbstractElement returns [EObject current=null] : iv_ruleAbstractElement= ruleAbstractElement EOF ;
    public final EObject entryRuleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractElement = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:107:2: (iv_ruleAbstractElement= ruleAbstractElement EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:108:2: iv_ruleAbstractElement= ruleAbstractElement EOF
            {
             newCompositeNode(grammarAccess.getAbstractElementRule()); 
            pushFollow(FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166);
            iv_ruleAbstractElement=ruleAbstractElement();

            state._fsp--;

             current =iv_ruleAbstractElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractElement176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractElement"


    // $ANTLR start "ruleAbstractElement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:115:1: ruleAbstractElement returns [EObject current=null] : (this_PackageDeclaration_0= rulePackageDeclaration | this_Component_1= ruleComponent | this_Interface_2= ruleInterface | this_Type_3= ruleType | this_ComponentInstance_4= ruleComponentInstance | this_PackageImport_5= rulePackageImport | this_BindComponents_6= ruleBindComponents ) ;
    public final EObject ruleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject this_PackageDeclaration_0 = null;

        EObject this_Component_1 = null;

        EObject this_Interface_2 = null;

        EObject this_Type_3 = null;

        EObject this_ComponentInstance_4 = null;

        EObject this_PackageImport_5 = null;

        EObject this_BindComponents_6 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:118:28: ( (this_PackageDeclaration_0= rulePackageDeclaration | this_Component_1= ruleComponent | this_Interface_2= ruleInterface | this_Type_3= ruleType | this_ComponentInstance_4= ruleComponentInstance | this_PackageImport_5= rulePackageImport | this_BindComponents_6= ruleBindComponents ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:119:1: (this_PackageDeclaration_0= rulePackageDeclaration | this_Component_1= ruleComponent | this_Interface_2= ruleInterface | this_Type_3= ruleType | this_ComponentInstance_4= ruleComponentInstance | this_PackageImport_5= rulePackageImport | this_BindComponents_6= ruleBindComponents )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:119:1: (this_PackageDeclaration_0= rulePackageDeclaration | this_Component_1= ruleComponent | this_Interface_2= ruleInterface | this_Type_3= ruleType | this_ComponentInstance_4= ruleComponentInstance | this_PackageImport_5= rulePackageImport | this_BindComponents_6= ruleBindComponents )
            int alt2=7;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt2=1;
                }
                break;
            case 29:
                {
                alt2=2;
                }
                break;
            case 34:
                {
                alt2=3;
                }
                break;
            case 37:
            case 38:
                {
                alt2=4;
                }
                break;
            case RULE_ID:
                {
                alt2=5;
                }
                break;
            case 14:
                {
                alt2=6;
                }
                break;
            case 26:
                {
                alt2=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:120:5: this_PackageDeclaration_0= rulePackageDeclaration
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getPackageDeclarationParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulePackageDeclaration_in_ruleAbstractElement223);
                    this_PackageDeclaration_0=rulePackageDeclaration();

                    state._fsp--;

                     
                            current = this_PackageDeclaration_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:130:5: this_Component_1= ruleComponent
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getComponentParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleComponent_in_ruleAbstractElement250);
                    this_Component_1=ruleComponent();

                    state._fsp--;

                     
                            current = this_Component_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:140:5: this_Interface_2= ruleInterface
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getInterfaceParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleInterface_in_ruleAbstractElement277);
                    this_Interface_2=ruleInterface();

                    state._fsp--;

                     
                            current = this_Interface_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:150:5: this_Type_3= ruleType
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getTypeParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleType_in_ruleAbstractElement304);
                    this_Type_3=ruleType();

                    state._fsp--;

                     
                            current = this_Type_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:160:5: this_ComponentInstance_4= ruleComponentInstance
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getComponentInstanceParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleComponentInstance_in_ruleAbstractElement331);
                    this_ComponentInstance_4=ruleComponentInstance();

                    state._fsp--;

                     
                            current = this_ComponentInstance_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:170:5: this_PackageImport_5= rulePackageImport
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getPackageImportParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_rulePackageImport_in_ruleAbstractElement358);
                    this_PackageImport_5=rulePackageImport();

                    state._fsp--;

                     
                            current = this_PackageImport_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:180:5: this_BindComponents_6= ruleBindComponents
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getBindComponentsParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleBindComponents_in_ruleAbstractElement385);
                    this_BindComponents_6=ruleBindComponents();

                    state._fsp--;

                     
                            current = this_BindComponents_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractElement"


    // $ANTLR start "entryRulePackageDeclaration"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:196:1: entryRulePackageDeclaration returns [EObject current=null] : iv_rulePackageDeclaration= rulePackageDeclaration EOF ;
    public final EObject entryRulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageDeclaration = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:197:2: (iv_rulePackageDeclaration= rulePackageDeclaration EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:198:2: iv_rulePackageDeclaration= rulePackageDeclaration EOF
            {
             newCompositeNode(grammarAccess.getPackageDeclarationRule()); 
            pushFollow(FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration420);
            iv_rulePackageDeclaration=rulePackageDeclaration();

            state._fsp--;

             current =iv_rulePackageDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackageDeclaration430); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageDeclaration"


    // $ANTLR start "rulePackageDeclaration"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:205:1: rulePackageDeclaration returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' ) ;
    public final EObject rulePackageDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_elements_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:208:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:209:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:209:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}' )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:209:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleAbstractElement ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_rulePackageDeclaration467); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageDeclarationAccess().getPackageKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:213:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:214:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:214:1: (lv_name_1_0= ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:215:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getNameQualifiedNameParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackageDeclaration488);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_rulePackageDeclaration500); 

                	newLeafNode(otherlv_2, grammarAccess.getPackageDeclarationAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:235:1: ( (lv_elements_3_0= ruleAbstractElement ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==RULE_ID||LA3_0==11||LA3_0==14||LA3_0==26||LA3_0==29||LA3_0==34||(LA3_0>=37 && LA3_0<=38)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:236:1: (lv_elements_3_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:236:1: (lv_elements_3_0= ruleAbstractElement )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:237:3: lv_elements_3_0= ruleAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPackageDeclarationAccess().getElementsAbstractElementParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractElement_in_rulePackageDeclaration521);
            	    lv_elements_3_0=ruleAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPackageDeclarationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_3_0, 
            	            		"AbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_rulePackageDeclaration534); 

                	newLeafNode(otherlv_4, grammarAccess.getPackageDeclarationAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageDeclaration"


    // $ANTLR start "entryRulePackageImport"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:265:1: entryRulePackageImport returns [EObject current=null] : iv_rulePackageImport= rulePackageImport EOF ;
    public final EObject entryRulePackageImport() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageImport = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:266:2: (iv_rulePackageImport= rulePackageImport EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:267:2: iv_rulePackageImport= rulePackageImport EOF
            {
             newCompositeNode(grammarAccess.getPackageImportRule()); 
            pushFollow(FOLLOW_rulePackageImport_in_entryRulePackageImport570);
            iv_rulePackageImport=rulePackageImport();

            state._fsp--;

             current =iv_rulePackageImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackageImport580); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageImport"


    // $ANTLR start "rulePackageImport"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:274:1: rulePackageImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) ) ;
    public final EObject rulePackageImport() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:277:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:278:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:278:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:278:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) )
            {
            otherlv_0=(Token)match(input,14,FOLLOW_14_in_rulePackageImport617); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageImportAccess().getImportKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:282:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:283:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:283:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:284:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildCard
            {
             
            	        newCompositeNode(grammarAccess.getPackageImportAccess().getImportedNamespaceQualifiedNameWithWildCardParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedNameWithWildCard_in_rulePackageImport638);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildCard();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageImportRule());
            	        }
                   		set(
                   			current, 
                   			"importedNamespace",
                    		lv_importedNamespace_1_0, 
                    		"QualifiedNameWithWildCard");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageImport"


    // $ANTLR start "entryRuleQualifiedName"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:308:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:309:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:310:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName675);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName686); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:317:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:320:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:321:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:321:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:321:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName726); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:328:1: (kw= '.' this_ID_2= RULE_ID )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==15) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:329:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,15,FOLLOW_15_in_ruleQualifiedName745); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName760); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleQualifiedNameWithWildCard"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:349:1: entryRuleQualifiedNameWithWildCard returns [String current=null] : iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF ;
    public final String entryRuleQualifiedNameWithWildCard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildCard = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:350:2: (iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:351:2: iv_ruleQualifiedNameWithWildCard= ruleQualifiedNameWithWildCard EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameWithWildCardRule()); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard808);
            iv_ruleQualifiedNameWithWildCard=ruleQualifiedNameWithWildCard();

            state._fsp--;

             current =iv_ruleQualifiedNameWithWildCard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard819); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWithWildCard"


    // $ANTLR start "ruleQualifiedNameWithWildCard"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:358:1: ruleQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildCard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:361:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:362:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:362:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:363:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    newCompositeNode(grammarAccess.getQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard866);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    afterParserOrEnumRuleCall();
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:373:1: (kw= '.*' )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==16) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:374:2: kw= '.*'
                    {
                    kw=(Token)match(input,16,FOLLOW_16_in_ruleQualifiedNameWithWildCard885); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getQualifiedNameWithWildCardAccess().getFullStopAsteriskKeyword_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWithWildCard"


    // $ANTLR start "entryRuleComponentStatement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:387:1: entryRuleComponentStatement returns [EObject current=null] : iv_ruleComponentStatement= ruleComponentStatement EOF ;
    public final EObject entryRuleComponentStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentStatement = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:388:2: (iv_ruleComponentStatement= ruleComponentStatement EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:389:2: iv_ruleComponentStatement= ruleComponentStatement EOF
            {
             newCompositeNode(grammarAccess.getComponentStatementRule()); 
            pushFollow(FOLLOW_ruleComponentStatement_in_entryRuleComponentStatement927);
            iv_ruleComponentStatement=ruleComponentStatement();

            state._fsp--;

             current =iv_ruleComponentStatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentStatement937); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentStatement"


    // $ANTLR start "ruleComponentStatement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:396:1: ruleComponentStatement returns [EObject current=null] : (this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint | this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint | this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint | this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint | this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint | this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint ) ;
    public final EObject ruleComponentStatement() throws RecognitionException {
        EObject current = null;

        EObject this_ComponentFollowsConstraint_0 = null;

        EObject this_ComponentPrecedesConstraint_1 = null;

        EObject this_ComponentCausedbyConstraint_2 = null;

        EObject this_ComponentLeadstoConstraint_3 = null;

        EObject this_ComponentAlternationConstraint_4 = null;

        EObject this_ComponentBetweenConstraint_5 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:399:28: ( (this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint | this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint | this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint | this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint | this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint | this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:400:1: (this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint | this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint | this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint | this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint | this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint | this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:400:1: (this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint | this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint | this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint | this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint | this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint | this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint )
            int alt6=6;
            alt6 = dfa6.predict(input);
            switch (alt6) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:401:5: this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentFollowsConstraintParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleComponentFollowsConstraint_in_ruleComponentStatement984);
                    this_ComponentFollowsConstraint_0=ruleComponentFollowsConstraint();

                    state._fsp--;

                     
                            current = this_ComponentFollowsConstraint_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:411:5: this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentPrecedesConstraintParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleComponentPrecedesConstraint_in_ruleComponentStatement1011);
                    this_ComponentPrecedesConstraint_1=ruleComponentPrecedesConstraint();

                    state._fsp--;

                     
                            current = this_ComponentPrecedesConstraint_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:421:5: this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentCausedbyConstraintParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleComponentCausedbyConstraint_in_ruleComponentStatement1038);
                    this_ComponentCausedbyConstraint_2=ruleComponentCausedbyConstraint();

                    state._fsp--;

                     
                            current = this_ComponentCausedbyConstraint_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:431:5: this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentLeadstoConstraintParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleComponentLeadstoConstraint_in_ruleComponentStatement1065);
                    this_ComponentLeadstoConstraint_3=ruleComponentLeadstoConstraint();

                    state._fsp--;

                     
                            current = this_ComponentLeadstoConstraint_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:441:5: this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentAlternationConstraintParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleComponentAlternationConstraint_in_ruleComponentStatement1092);
                    this_ComponentAlternationConstraint_4=ruleComponentAlternationConstraint();

                    state._fsp--;

                     
                            current = this_ComponentAlternationConstraint_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:451:5: this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint
                    {
                     
                            newCompositeNode(grammarAccess.getComponentStatementAccess().getComponentBetweenConstraintParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleComponentBetweenConstraint_in_ruleComponentStatement1119);
                    this_ComponentBetweenConstraint_5=ruleComponentBetweenConstraint();

                    state._fsp--;

                     
                            current = this_ComponentBetweenConstraint_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentStatement"


    // $ANTLR start "entryRuleComponentBetweenConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:467:1: entryRuleComponentBetweenConstraint returns [EObject current=null] : iv_ruleComponentBetweenConstraint= ruleComponentBetweenConstraint EOF ;
    public final EObject entryRuleComponentBetweenConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentBetweenConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:468:2: (iv_ruleComponentBetweenConstraint= ruleComponentBetweenConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:469:2: iv_ruleComponentBetweenConstraint= ruleComponentBetweenConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentBetweenConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentBetweenConstraint_in_entryRuleComponentBetweenConstraint1154);
            iv_ruleComponentBetweenConstraint=ruleComponentBetweenConstraint();

            state._fsp--;

             current =iv_ruleComponentBetweenConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentBetweenConstraint1164); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentBetweenConstraint"


    // $ANTLR start "ruleComponentBetweenConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:476:1: ruleComponentBetweenConstraint returns [EObject current=null] : ( ( (lv_middleAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'between' ( (lv_beforeAction_2_0= ruleComponentActionStatement ) ) otherlv_3= 'and' ( (lv_afterAction_4_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentBetweenConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_middleAction_0_0 = null;

        EObject lv_beforeAction_2_0 = null;

        EObject lv_afterAction_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:479:28: ( ( ( (lv_middleAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'between' ( (lv_beforeAction_2_0= ruleComponentActionStatement ) ) otherlv_3= 'and' ( (lv_afterAction_4_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:480:1: ( ( (lv_middleAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'between' ( (lv_beforeAction_2_0= ruleComponentActionStatement ) ) otherlv_3= 'and' ( (lv_afterAction_4_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:480:1: ( ( (lv_middleAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'between' ( (lv_beforeAction_2_0= ruleComponentActionStatement ) ) otherlv_3= 'and' ( (lv_afterAction_4_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:480:2: ( (lv_middleAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'between' ( (lv_beforeAction_2_0= ruleComponentActionStatement ) ) otherlv_3= 'and' ( (lv_afterAction_4_0= ruleComponentActionStatement ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:480:2: ( (lv_middleAction_0_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:481:1: (lv_middleAction_0_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:481:1: (lv_middleAction_0_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:482:3: lv_middleAction_0_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentBetweenConstraintAccess().getMiddleActionComponentActionStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1210);
            lv_middleAction_0_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentBetweenConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"middleAction",
                    		lv_middleAction_0_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleComponentBetweenConstraint1222); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentBetweenConstraintAccess().getBetweenKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:502:1: ( (lv_beforeAction_2_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:503:1: (lv_beforeAction_2_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:503:1: (lv_beforeAction_2_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:504:3: lv_beforeAction_2_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentBetweenConstraintAccess().getBeforeActionComponentActionStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1243);
            lv_beforeAction_2_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentBetweenConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"beforeAction",
                    		lv_beforeAction_2_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,18,FOLLOW_18_in_ruleComponentBetweenConstraint1255); 

                	newLeafNode(otherlv_3, grammarAccess.getComponentBetweenConstraintAccess().getAndKeyword_3());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:524:1: ( (lv_afterAction_4_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:525:1: (lv_afterAction_4_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:525:1: (lv_afterAction_4_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:526:3: lv_afterAction_4_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentBetweenConstraintAccess().getAfterActionComponentActionStatementParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1276);
            lv_afterAction_4_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentBetweenConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"afterAction",
                    		lv_afterAction_4_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentBetweenConstraint"


    // $ANTLR start "entryRuleComponentAlternationConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:550:1: entryRuleComponentAlternationConstraint returns [EObject current=null] : iv_ruleComponentAlternationConstraint= ruleComponentAlternationConstraint EOF ;
    public final EObject entryRuleComponentAlternationConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentAlternationConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:551:2: (iv_ruleComponentAlternationConstraint= ruleComponentAlternationConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:552:2: iv_ruleComponentAlternationConstraint= ruleComponentAlternationConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentAlternationConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentAlternationConstraint_in_entryRuleComponentAlternationConstraint1312);
            iv_ruleComponentAlternationConstraint=ruleComponentAlternationConstraint();

            state._fsp--;

             current =iv_ruleComponentAlternationConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentAlternationConstraint1322); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentAlternationConstraint"


    // $ANTLR start "ruleComponentAlternationConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:559:1: ruleComponentAlternationConstraint returns [EObject current=null] : (otherlv_0= 'alternation' ( (lv_action1_1_0= ruleComponentActionStatement ) ) otherlv_2= ',' ( (lv_action2_3_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentAlternationConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_action1_1_0 = null;

        EObject lv_action2_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:562:28: ( (otherlv_0= 'alternation' ( (lv_action1_1_0= ruleComponentActionStatement ) ) otherlv_2= ',' ( (lv_action2_3_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:563:1: (otherlv_0= 'alternation' ( (lv_action1_1_0= ruleComponentActionStatement ) ) otherlv_2= ',' ( (lv_action2_3_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:563:1: (otherlv_0= 'alternation' ( (lv_action1_1_0= ruleComponentActionStatement ) ) otherlv_2= ',' ( (lv_action2_3_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:563:3: otherlv_0= 'alternation' ( (lv_action1_1_0= ruleComponentActionStatement ) ) otherlv_2= ',' ( (lv_action2_3_0= ruleComponentActionStatement ) )
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleComponentAlternationConstraint1359); 

                	newLeafNode(otherlv_0, grammarAccess.getComponentAlternationConstraintAccess().getAlternationKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:567:1: ( (lv_action1_1_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:568:1: (lv_action1_1_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:568:1: (lv_action1_1_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:569:3: lv_action1_1_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentAlternationConstraintAccess().getAction1ComponentActionStatementParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentAlternationConstraint1380);
            lv_action1_1_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentAlternationConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"action1",
                    		lv_action1_1_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleComponentAlternationConstraint1392); 

                	newLeafNode(otherlv_2, grammarAccess.getComponentAlternationConstraintAccess().getCommaKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:589:1: ( (lv_action2_3_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:590:1: (lv_action2_3_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:590:1: (lv_action2_3_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:591:3: lv_action2_3_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentAlternationConstraintAccess().getAction2ComponentActionStatementParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentAlternationConstraint1413);
            lv_action2_3_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentAlternationConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"action2",
                    		lv_action2_3_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentAlternationConstraint"


    // $ANTLR start "entryRuleComponentLeadstoConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:615:1: entryRuleComponentLeadstoConstraint returns [EObject current=null] : iv_ruleComponentLeadstoConstraint= ruleComponentLeadstoConstraint EOF ;
    public final EObject entryRuleComponentLeadstoConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentLeadstoConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:616:2: (iv_ruleComponentLeadstoConstraint= ruleComponentLeadstoConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:617:2: iv_ruleComponentLeadstoConstraint= ruleComponentLeadstoConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentLeadstoConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentLeadstoConstraint_in_entryRuleComponentLeadstoConstraint1449);
            iv_ruleComponentLeadstoConstraint=ruleComponentLeadstoConstraint();

            state._fsp--;

             current =iv_ruleComponentLeadstoConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentLeadstoConstraint1459); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentLeadstoConstraint"


    // $ANTLR start "ruleComponentLeadstoConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:624:1: ruleComponentLeadstoConstraint returns [EObject current=null] : ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'leadsto' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentLeadstoConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_leftAction_0_0 = null;

        EObject lv_rightAction_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:627:28: ( ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'leadsto' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:628:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'leadsto' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:628:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'leadsto' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:628:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'leadsto' ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:628:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:629:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:629:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:630:3: lv_leftAction_0_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentLeadstoConstraintAccess().getLeftActionComponentActionStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentLeadstoConstraint1505);
            lv_leftAction_0_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentLeadstoConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"leftAction",
                    		lv_leftAction_0_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleComponentLeadstoConstraint1517); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentLeadstoConstraintAccess().getLeadstoKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:650:1: ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:651:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:651:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:652:3: lv_rightAction_2_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentLeadstoConstraintAccess().getRightActionComponentActionStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentLeadstoConstraint1538);
            lv_rightAction_2_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentLeadstoConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"rightAction",
                    		lv_rightAction_2_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentLeadstoConstraint"


    // $ANTLR start "entryRuleComponentCausedbyConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:676:1: entryRuleComponentCausedbyConstraint returns [EObject current=null] : iv_ruleComponentCausedbyConstraint= ruleComponentCausedbyConstraint EOF ;
    public final EObject entryRuleComponentCausedbyConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentCausedbyConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:677:2: (iv_ruleComponentCausedbyConstraint= ruleComponentCausedbyConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:678:2: iv_ruleComponentCausedbyConstraint= ruleComponentCausedbyConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentCausedbyConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentCausedbyConstraint_in_entryRuleComponentCausedbyConstraint1574);
            iv_ruleComponentCausedbyConstraint=ruleComponentCausedbyConstraint();

            state._fsp--;

             current =iv_ruleComponentCausedbyConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentCausedbyConstraint1584); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentCausedbyConstraint"


    // $ANTLR start "ruleComponentCausedbyConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:685:1: ruleComponentCausedbyConstraint returns [EObject current=null] : ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'causedby' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentCausedbyConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_leftAction_0_0 = null;

        EObject lv_rightAction_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:688:28: ( ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'causedby' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:689:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'causedby' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:689:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'causedby' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:689:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'causedby' ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:689:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:690:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:690:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:691:3: lv_leftAction_0_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentCausedbyConstraintAccess().getLeftActionComponentActionStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentCausedbyConstraint1630);
            lv_leftAction_0_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentCausedbyConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"leftAction",
                    		lv_leftAction_0_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleComponentCausedbyConstraint1642); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentCausedbyConstraintAccess().getCausedbyKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:711:1: ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:712:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:712:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:713:3: lv_rightAction_2_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentCausedbyConstraintAccess().getRightActionComponentActionStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentCausedbyConstraint1663);
            lv_rightAction_2_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentCausedbyConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"rightAction",
                    		lv_rightAction_2_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentCausedbyConstraint"


    // $ANTLR start "entryRuleComponentPrecedesConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:737:1: entryRuleComponentPrecedesConstraint returns [EObject current=null] : iv_ruleComponentPrecedesConstraint= ruleComponentPrecedesConstraint EOF ;
    public final EObject entryRuleComponentPrecedesConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentPrecedesConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:738:2: (iv_ruleComponentPrecedesConstraint= ruleComponentPrecedesConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:739:2: iv_ruleComponentPrecedesConstraint= ruleComponentPrecedesConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentPrecedesConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentPrecedesConstraint_in_entryRuleComponentPrecedesConstraint1699);
            iv_ruleComponentPrecedesConstraint=ruleComponentPrecedesConstraint();

            state._fsp--;

             current =iv_ruleComponentPrecedesConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentPrecedesConstraint1709); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentPrecedesConstraint"


    // $ANTLR start "ruleComponentPrecedesConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:746:1: ruleComponentPrecedesConstraint returns [EObject current=null] : ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'precedes' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentPrecedesConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_leftAction_0_0 = null;

        EObject lv_rightAction_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:749:28: ( ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'precedes' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:750:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'precedes' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:750:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'precedes' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:750:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'precedes' ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:750:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:751:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:751:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:752:3: lv_leftAction_0_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentPrecedesConstraintAccess().getLeftActionComponentActionStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentPrecedesConstraint1755);
            lv_leftAction_0_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentPrecedesConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"leftAction",
                    		lv_leftAction_0_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleComponentPrecedesConstraint1767); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentPrecedesConstraintAccess().getPrecedesKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:772:1: ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:773:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:773:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:774:3: lv_rightAction_2_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentPrecedesConstraintAccess().getRightActionComponentActionStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentPrecedesConstraint1788);
            lv_rightAction_2_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentPrecedesConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"rightAction",
                    		lv_rightAction_2_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentPrecedesConstraint"


    // $ANTLR start "entryRuleComponentFollowsConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:798:1: entryRuleComponentFollowsConstraint returns [EObject current=null] : iv_ruleComponentFollowsConstraint= ruleComponentFollowsConstraint EOF ;
    public final EObject entryRuleComponentFollowsConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentFollowsConstraint = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:799:2: (iv_ruleComponentFollowsConstraint= ruleComponentFollowsConstraint EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:800:2: iv_ruleComponentFollowsConstraint= ruleComponentFollowsConstraint EOF
            {
             newCompositeNode(grammarAccess.getComponentFollowsConstraintRule()); 
            pushFollow(FOLLOW_ruleComponentFollowsConstraint_in_entryRuleComponentFollowsConstraint1824);
            iv_ruleComponentFollowsConstraint=ruleComponentFollowsConstraint();

            state._fsp--;

             current =iv_ruleComponentFollowsConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentFollowsConstraint1834); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentFollowsConstraint"


    // $ANTLR start "ruleComponentFollowsConstraint"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:807:1: ruleComponentFollowsConstraint returns [EObject current=null] : ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'follows' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) ;
    public final EObject ruleComponentFollowsConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_leftAction_0_0 = null;

        EObject lv_rightAction_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:810:28: ( ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'follows' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:811:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'follows' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:811:1: ( ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'follows' ( (lv_rightAction_2_0= ruleComponentActionStatement ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:811:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) ) otherlv_1= 'follows' ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:811:2: ( (lv_leftAction_0_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:812:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:812:1: (lv_leftAction_0_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:813:3: lv_leftAction_0_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentFollowsConstraintAccess().getLeftActionComponentActionStatementParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentFollowsConstraint1880);
            lv_leftAction_0_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentFollowsConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"leftAction",
                    		lv_leftAction_0_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleComponentFollowsConstraint1892); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentFollowsConstraintAccess().getFollowsKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:833:1: ( (lv_rightAction_2_0= ruleComponentActionStatement ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:834:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:834:1: (lv_rightAction_2_0= ruleComponentActionStatement )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:835:3: lv_rightAction_2_0= ruleComponentActionStatement
            {
             
            	        newCompositeNode(grammarAccess.getComponentFollowsConstraintAccess().getRightActionComponentActionStatementParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleComponentActionStatement_in_ruleComponentFollowsConstraint1913);
            lv_rightAction_2_0=ruleComponentActionStatement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getComponentFollowsConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"rightAction",
                    		lv_rightAction_2_0, 
                    		"ComponentActionStatement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentFollowsConstraint"


    // $ANTLR start "entryRuleComponentActionStatement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:859:1: entryRuleComponentActionStatement returns [EObject current=null] : iv_ruleComponentActionStatement= ruleComponentActionStatement EOF ;
    public final EObject entryRuleComponentActionStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentActionStatement = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:860:2: (iv_ruleComponentActionStatement= ruleComponentActionStatement EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:861:2: iv_ruleComponentActionStatement= ruleComponentActionStatement EOF
            {
             newCompositeNode(grammarAccess.getComponentActionStatementRule()); 
            pushFollow(FOLLOW_ruleComponentActionStatement_in_entryRuleComponentActionStatement1949);
            iv_ruleComponentActionStatement=ruleComponentActionStatement();

            state._fsp--;

             current =iv_ruleComponentActionStatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentActionStatement1959); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentActionStatement"


    // $ANTLR start "ruleComponentActionStatement"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:868:1: ruleComponentActionStatement returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleComponentActionStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:871:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:872:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:872:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:872:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '::' ( ( ruleQualifiedName ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:872:2: ( (otherlv_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:873:1: (otherlv_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:873:1: (otherlv_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:874:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getComponentActionStatementRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleComponentActionStatement2004); 

            		newLeafNode(otherlv_0, grammarAccess.getComponentActionStatementAccess().getContractContractCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleComponentActionStatement2016); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentActionStatementAccess().getColonColonKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:889:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:890:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:890:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:891:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getComponentActionStatementRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getComponentActionStatementAccess().getActionActionCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleComponentActionStatement2039);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentActionStatement"


    // $ANTLR start "entryRuleBindComponents"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:912:1: entryRuleBindComponents returns [EObject current=null] : iv_ruleBindComponents= ruleBindComponents EOF ;
    public final EObject entryRuleBindComponents() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBindComponents = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:913:2: (iv_ruleBindComponents= ruleBindComponents EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:914:2: iv_ruleBindComponents= ruleBindComponents EOF
            {
             newCompositeNode(grammarAccess.getBindComponentsRule()); 
            pushFollow(FOLLOW_ruleBindComponents_in_entryRuleBindComponents2075);
            iv_ruleBindComponents=ruleBindComponents();

            state._fsp--;

             current =iv_ruleBindComponents; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBindComponents2085); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBindComponents"


    // $ANTLR start "ruleBindComponents"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:921:1: ruleBindComponents returns [EObject current=null] : (otherlv_0= 'bind' ( ( ruleQualifiedName ) ) otherlv_2= '::' ( ( ruleQualifiedName ) ) otherlv_4= 'to' ( ( ruleQualifiedName ) ) otherlv_6= '::' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleBindComponents() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:924:28: ( (otherlv_0= 'bind' ( ( ruleQualifiedName ) ) otherlv_2= '::' ( ( ruleQualifiedName ) ) otherlv_4= 'to' ( ( ruleQualifiedName ) ) otherlv_6= '::' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:925:1: (otherlv_0= 'bind' ( ( ruleQualifiedName ) ) otherlv_2= '::' ( ( ruleQualifiedName ) ) otherlv_4= 'to' ( ( ruleQualifiedName ) ) otherlv_6= '::' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:925:1: (otherlv_0= 'bind' ( ( ruleQualifiedName ) ) otherlv_2= '::' ( ( ruleQualifiedName ) ) otherlv_4= 'to' ( ( ruleQualifiedName ) ) otherlv_6= '::' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:925:3: otherlv_0= 'bind' ( ( ruleQualifiedName ) ) otherlv_2= '::' ( ( ruleQualifiedName ) ) otherlv_4= 'to' ( ( ruleQualifiedName ) ) otherlv_6= '::' ( ( ruleQualifiedName ) )
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleBindComponents2122); 

                	newLeafNode(otherlv_0, grammarAccess.getBindComponentsAccess().getBindKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:929:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:930:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:930:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:931:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getBindComponentsRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getBindComponentsAccess().getLeftComponentComponentInstanceCrossReference_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleBindComponents2145);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleBindComponents2157); 

                	newLeafNode(otherlv_2, grammarAccess.getBindComponentsAccess().getColonColonKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:948:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:949:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:949:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:950:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getBindComponentsRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getBindComponentsAccess().getLeftContractContractCrossReference_3_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleBindComponents2180);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleBindComponents2192); 

                	newLeafNode(otherlv_4, grammarAccess.getBindComponentsAccess().getToKeyword_4());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:967:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:968:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:968:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:969:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getBindComponentsRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getBindComponentsAccess().getRightComponentComponentInstanceCrossReference_5_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleBindComponents2215);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,25,FOLLOW_25_in_ruleBindComponents2227); 

                	newLeafNode(otherlv_6, grammarAccess.getBindComponentsAccess().getColonColonKeyword_6());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:986:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:987:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:987:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:988:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getBindComponentsRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getBindComponentsAccess().getRightContractContractCrossReference_7_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleBindComponents2250);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBindComponents"


    // $ANTLR start "entryRuleComponentInstance"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1009:1: entryRuleComponentInstance returns [EObject current=null] : iv_ruleComponentInstance= ruleComponentInstance EOF ;
    public final EObject entryRuleComponentInstance() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentInstance = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1010:2: (iv_ruleComponentInstance= ruleComponentInstance EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1011:2: iv_ruleComponentInstance= ruleComponentInstance EOF
            {
             newCompositeNode(grammarAccess.getComponentInstanceRule()); 
            pushFollow(FOLLOW_ruleComponentInstance_in_entryRuleComponentInstance2286);
            iv_ruleComponentInstance=ruleComponentInstance();

            state._fsp--;

             current =iv_ruleComponentInstance; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentInstance2296); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentInstance"


    // $ANTLR start "ruleComponentInstance"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1018:1: ruleComponentInstance returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'instanceof' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleComponentInstance() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1021:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'instanceof' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1022:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'instanceof' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1022:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'instanceof' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1022:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'instanceof' ( ( ruleQualifiedName ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1022:2: ( (lv_name_0_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1023:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1023:1: (lv_name_0_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1024:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleComponentInstance2338); 

            			newLeafNode(lv_name_0_0, grammarAccess.getComponentInstanceAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getComponentInstanceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_ruleComponentInstance2355); 

                	newLeafNode(otherlv_1, grammarAccess.getComponentInstanceAccess().getInstanceofKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1044:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1045:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1045:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1046:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getComponentInstanceRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getComponentInstanceAccess().getComponentComponentCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleComponentInstance2378);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentInstance"


    // $ANTLR start "entryRuleComponent"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1067:1: entryRuleComponent returns [EObject current=null] : iv_ruleComponent= ruleComponent EOF ;
    public final EObject entryRuleComponent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponent = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1068:2: (iv_ruleComponent= ruleComponent EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1069:2: iv_ruleComponent= ruleComponent EOF
            {
             newCompositeNode(grammarAccess.getComponentRule()); 
            pushFollow(FOLLOW_ruleComponent_in_entryRuleComponent2414);
            iv_ruleComponent=ruleComponent();

            state._fsp--;

             current =iv_ruleComponent; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponent2424); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponent"


    // $ANTLR start "ruleComponent"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1076:1: ruleComponent returns [EObject current=null] : (otherlv_0= 'component' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )* (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )? otherlv_11= '}' ) ;
    public final EObject ruleComponent() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        EObject lv_provides_4_0 = null;

        EObject lv_requires_6_0 = null;

        EObject lv_statements_9_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1079:28: ( (otherlv_0= 'component' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )* (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )? otherlv_11= '}' ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1080:1: (otherlv_0= 'component' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )* (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )? otherlv_11= '}' )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1080:1: (otherlv_0= 'component' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )* (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )? otherlv_11= '}' )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1080:3: otherlv_0= 'component' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )* (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )? otherlv_11= '}'
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleComponent2461); 

                	newLeafNode(otherlv_0, grammarAccess.getComponentAccess().getComponentKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1084:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1085:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1085:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1086:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleComponent2478); 

            			newLeafNode(lv_name_1_0, grammarAccess.getComponentAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getComponentRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleComponent2495); 

                	newLeafNode(otherlv_2, grammarAccess.getComponentAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1106:1: ( (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) ) | (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) ) )*
            loop7:
            do {
                int alt7=3;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==30) ) {
                    alt7=1;
                }
                else if ( (LA7_0==31) ) {
                    alt7=2;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1106:2: (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1106:2: (otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) ) )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1106:4: otherlv_3= 'provides' ( (lv_provides_4_0= ruleContract ) )
            	    {
            	    otherlv_3=(Token)match(input,30,FOLLOW_30_in_ruleComponent2509); 

            	        	newLeafNode(otherlv_3, grammarAccess.getComponentAccess().getProvidesKeyword_3_0_0());
            	        
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1110:1: ( (lv_provides_4_0= ruleContract ) )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1111:1: (lv_provides_4_0= ruleContract )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1111:1: (lv_provides_4_0= ruleContract )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1112:3: lv_provides_4_0= ruleContract
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getComponentAccess().getProvidesContractParserRuleCall_3_0_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleContract_in_ruleComponent2530);
            	    lv_provides_4_0=ruleContract();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getComponentRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"provides",
            	            		lv_provides_4_0, 
            	            		"Contract");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1129:6: (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1129:6: (otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) ) )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1129:8: otherlv_5= 'requires' ( (lv_requires_6_0= ruleContract ) )
            	    {
            	    otherlv_5=(Token)match(input,31,FOLLOW_31_in_ruleComponent2550); 

            	        	newLeafNode(otherlv_5, grammarAccess.getComponentAccess().getRequiresKeyword_3_1_0());
            	        
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1133:1: ( (lv_requires_6_0= ruleContract ) )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1134:1: (lv_requires_6_0= ruleContract )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1134:1: (lv_requires_6_0= ruleContract )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1135:3: lv_requires_6_0= ruleContract
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getComponentAccess().getRequiresContractParserRuleCall_3_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleContract_in_ruleComponent2571);
            	    lv_requires_6_0=ruleContract();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getComponentRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"requires",
            	            		lv_requires_6_0, 
            	            		"Contract");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1151:5: (otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==32) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1151:7: otherlv_7= 'constraints' otherlv_8= '{' ( (lv_statements_9_0= ruleComponentStatement ) )* otherlv_10= '}'
                    {
                    otherlv_7=(Token)match(input,32,FOLLOW_32_in_ruleComponent2587); 

                        	newLeafNode(otherlv_7, grammarAccess.getComponentAccess().getConstraintsKeyword_4_0());
                        
                    otherlv_8=(Token)match(input,12,FOLLOW_12_in_ruleComponent2599); 

                        	newLeafNode(otherlv_8, grammarAccess.getComponentAccess().getLeftCurlyBracketKeyword_4_1());
                        
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1159:1: ( (lv_statements_9_0= ruleComponentStatement ) )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( (LA8_0==RULE_ID||LA8_0==19) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1160:1: (lv_statements_9_0= ruleComponentStatement )
                    	    {
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1160:1: (lv_statements_9_0= ruleComponentStatement )
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1161:3: lv_statements_9_0= ruleComponentStatement
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getComponentAccess().getStatementsComponentStatementParserRuleCall_4_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleComponentStatement_in_ruleComponent2620);
                    	    lv_statements_9_0=ruleComponentStatement();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getComponentRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"statements",
                    	            		lv_statements_9_0, 
                    	            		"ComponentStatement");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop8;
                        }
                    } while (true);

                    otherlv_10=(Token)match(input,13,FOLLOW_13_in_ruleComponent2633); 

                        	newLeafNode(otherlv_10, grammarAccess.getComponentAccess().getRightCurlyBracketKeyword_4_3());
                        

                    }
                    break;

            }

            otherlv_11=(Token)match(input,13,FOLLOW_13_in_ruleComponent2647); 

                	newLeafNode(otherlv_11, grammarAccess.getComponentAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponent"


    // $ANTLR start "entryRuleContract"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1193:1: entryRuleContract returns [EObject current=null] : iv_ruleContract= ruleContract EOF ;
    public final EObject entryRuleContract() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContract = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1194:2: (iv_ruleContract= ruleContract EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1195:2: iv_ruleContract= ruleContract EOF
            {
             newCompositeNode(grammarAccess.getContractRule()); 
            pushFollow(FOLLOW_ruleContract_in_entryRuleContract2683);
            iv_ruleContract=ruleContract();

            state._fsp--;

             current =iv_ruleContract; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContract2693); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContract"


    // $ANTLR start "ruleContract"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1202:1: ruleContract returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleContract() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1205:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1206:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1206:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1206:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1206:2: ( (lv_name_0_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1207:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1207:1: (lv_name_0_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1208:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleContract2735); 

            			newLeafNode(lv_name_0_0, grammarAccess.getContractAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getContractRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleContract2752); 

                	newLeafNode(otherlv_1, grammarAccess.getContractAccess().getColonKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1228:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1229:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1229:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1230:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getContractRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getContractAccess().getInterfaceInterfaceCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleContract2775);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContract"


    // $ANTLR start "entryRuleInterface"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1251:1: entryRuleInterface returns [EObject current=null] : iv_ruleInterface= ruleInterface EOF ;
    public final EObject entryRuleInterface() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInterface = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1252:2: (iv_ruleInterface= ruleInterface EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1253:2: iv_ruleInterface= ruleInterface EOF
            {
             newCompositeNode(grammarAccess.getInterfaceRule()); 
            pushFollow(FOLLOW_ruleInterface_in_entryRuleInterface2811);
            iv_ruleInterface=ruleInterface();

            state._fsp--;

             current =iv_ruleInterface; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInterface2821); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInterface"


    // $ANTLR start "ruleInterface"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1260:1: ruleInterface returns [EObject current=null] : (otherlv_0= 'interface ' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )* otherlv_4= '}' ) ;
    public final EObject ruleInterface() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_actions_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1263:28: ( (otherlv_0= 'interface ' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )* otherlv_4= '}' ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1264:1: (otherlv_0= 'interface ' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )* otherlv_4= '}' )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1264:1: (otherlv_0= 'interface ' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )* otherlv_4= '}' )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1264:3: otherlv_0= 'interface ' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_actions_3_0= ruleAction ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleInterface2858); 

                	newLeafNode(otherlv_0, grammarAccess.getInterfaceAccess().getInterfaceKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1268:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1269:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1269:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1270:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleInterface2875); 

            			newLeafNode(lv_name_1_0, grammarAccess.getInterfaceAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getInterfaceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleInterface2892); 

                	newLeafNode(otherlv_2, grammarAccess.getInterfaceAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1290:1: ( (lv_actions_3_0= ruleAction ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==RULE_ID) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1291:1: (lv_actions_3_0= ruleAction )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1291:1: (lv_actions_3_0= ruleAction )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1292:3: lv_actions_3_0= ruleAction
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getInterfaceAccess().getActionsActionParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAction_in_ruleInterface2913);
            	    lv_actions_3_0=ruleAction();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getInterfaceRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actions",
            	            		lv_actions_3_0, 
            	            		"Action");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleInterface2926); 

                	newLeafNode(otherlv_4, grammarAccess.getInterfaceAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInterface"


    // $ANTLR start "entryRuleAction"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1320:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ;
    public final EObject entryRuleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAction = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1321:2: (iv_ruleAction= ruleAction EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1322:2: iv_ruleAction= ruleAction EOF
            {
             newCompositeNode(grammarAccess.getActionRule()); 
            pushFollow(FOLLOW_ruleAction_in_entryRuleAction2962);
            iv_ruleAction=ruleAction();

            state._fsp--;

             current =iv_ruleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAction2972); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAction"


    // $ANTLR start "ruleAction"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1329:1: ruleAction returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' ) ;
    public final EObject ruleAction() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_parameters_3_0 = null;

        EObject lv_parameters_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1332:28: ( ( ( ( ruleQualifiedName ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1333:1: ( ( ( ruleQualifiedName ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1333:1: ( ( ( ruleQualifiedName ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')' )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1333:2: ( ( ruleQualifiedName ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )? otherlv_6= ')'
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1333:2: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1334:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1334:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1335:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getActionRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getActionAccess().getReturnTypeCrossReference_0_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleAction3020);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1348:2: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1349:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1349:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1350:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAction3037); 

            			newLeafNode(lv_name_1_0, grammarAccess.getActionAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getActionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,35,FOLLOW_35_in_ruleAction3054); 

                	newLeafNode(otherlv_2, grammarAccess.getActionAccess().getLeftParenthesisKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1370:1: ( ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )* )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==RULE_ID) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1370:2: ( (lv_parameters_3_0= ruleParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )*
                    {
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1370:2: ( (lv_parameters_3_0= ruleParameter ) )
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1371:1: (lv_parameters_3_0= ruleParameter )
                    {
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1371:1: (lv_parameters_3_0= ruleParameter )
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1372:3: lv_parameters_3_0= ruleParameter
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionAccess().getParametersParameterParserRuleCall_3_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleParameter_in_ruleAction3076);
                    lv_parameters_3_0=ruleParameter();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionRule());
                    	        }
                           		add(
                           			current, 
                           			"parameters",
                            		lv_parameters_3_0, 
                            		"Parameter");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1388:2: (otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) ) )*
                    loop11:
                    do {
                        int alt11=2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0==20) ) {
                            alt11=1;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1388:4: otherlv_4= ',' ( (lv_parameters_5_0= ruleParameter ) )
                    	    {
                    	    otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleAction3089); 

                    	        	newLeafNode(otherlv_4, grammarAccess.getActionAccess().getCommaKeyword_3_1_0());
                    	        
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1392:1: ( (lv_parameters_5_0= ruleParameter ) )
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1393:1: (lv_parameters_5_0= ruleParameter )
                    	    {
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1393:1: (lv_parameters_5_0= ruleParameter )
                    	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1394:3: lv_parameters_5_0= ruleParameter
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getActionAccess().getParametersParameterParserRuleCall_3_1_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleParameter_in_ruleAction3110);
                    	    lv_parameters_5_0=ruleParameter();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getActionRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"parameters",
                    	            		lv_parameters_5_0, 
                    	            		"Parameter");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop11;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,36,FOLLOW_36_in_ruleAction3126); 

                	newLeafNode(otherlv_6, grammarAccess.getActionAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAction"


    // $ANTLR start "entryRuleParameter"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1422:1: entryRuleParameter returns [EObject current=null] : iv_ruleParameter= ruleParameter EOF ;
    public final EObject entryRuleParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParameter = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1423:2: (iv_ruleParameter= ruleParameter EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1424:2: iv_ruleParameter= ruleParameter EOF
            {
             newCompositeNode(grammarAccess.getParameterRule()); 
            pushFollow(FOLLOW_ruleParameter_in_entryRuleParameter3162);
            iv_ruleParameter=ruleParameter();

            state._fsp--;

             current =iv_ruleParameter; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParameter3172); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParameter"


    // $ANTLR start "ruleParameter"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1431:1: ruleParameter returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleParameter() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1434:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1435:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1435:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1435:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= ':' ( ( ruleQualifiedName ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1435:2: ( (lv_name_0_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1436:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1436:1: (lv_name_0_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1437:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleParameter3214); 

            			newLeafNode(lv_name_0_0, grammarAccess.getParameterAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getParameterRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            otherlv_1=(Token)match(input,33,FOLLOW_33_in_ruleParameter3231); 

                	newLeafNode(otherlv_1, grammarAccess.getParameterAccess().getColonKeyword_1());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1457:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1458:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1458:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1459:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getParameterRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getParameterAccess().getTypeTypeCrossReference_2_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleParameter3254);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParameter"


    // $ANTLR start "entryRuleType"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1480:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
    public final EObject entryRuleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleType = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1481:2: (iv_ruleType= ruleType EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1482:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType3290);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType3300); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1489:1: ruleType returns [EObject current=null] : (this_DataType_0= ruleDataType | this_Entity_1= ruleEntity ) ;
    public final EObject ruleType() throws RecognitionException {
        EObject current = null;

        EObject this_DataType_0 = null;

        EObject this_Entity_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1492:28: ( (this_DataType_0= ruleDataType | this_Entity_1= ruleEntity ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1493:1: (this_DataType_0= ruleDataType | this_Entity_1= ruleEntity )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1493:1: (this_DataType_0= ruleDataType | this_Entity_1= ruleEntity )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==37) ) {
                alt13=1;
            }
            else if ( (LA13_0==38) ) {
                alt13=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1494:5: this_DataType_0= ruleDataType
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getDataTypeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleDataType_in_ruleType3347);
                    this_DataType_0=ruleDataType();

                    state._fsp--;

                     
                            current = this_DataType_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1504:5: this_Entity_1= ruleEntity
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getEntityParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleEntity_in_ruleType3374);
                    this_Entity_1=ruleEntity();

                    state._fsp--;

                     
                            current = this_Entity_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleDataType"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1520:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
    public final EObject entryRuleDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataType = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1521:2: (iv_ruleDataType= ruleDataType EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1522:2: iv_ruleDataType= ruleDataType EOF
            {
             newCompositeNode(grammarAccess.getDataTypeRule()); 
            pushFollow(FOLLOW_ruleDataType_in_entryRuleDataType3409);
            iv_ruleDataType=ruleDataType();

            state._fsp--;

             current =iv_ruleDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDataType3419); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataType"


    // $ANTLR start "ruleDataType"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1529:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) ) ;
    public final EObject ruleDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1532:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1533:1: (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1533:1: (otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1533:3: otherlv_0= 'datatype' ( (lv_name_1_0= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleDataType3456); 

                	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1537:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1538:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1538:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1539:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDataType3473); 

            			newLeafNode(lv_name_1_0, grammarAccess.getDataTypeAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDataTypeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataType"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1563:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1564:2: (iv_ruleEntity= ruleEntity EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1565:2: iv_ruleEntity= ruleEntity EOF
            {
             newCompositeNode(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity3514);
            iv_ruleEntity=ruleEntity();

            state._fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity3524); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1572:1: ruleEntity returns [EObject current=null] : (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_attributes_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1575:28: ( (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1576:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1576:1: (otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}' )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1576:3: otherlv_0= 'entity' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )? otherlv_4= '{' ( (lv_attributes_5_0= ruleAttribute ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleEntity3561); 

                	newLeafNode(otherlv_0, grammarAccess.getEntityAccess().getEntityKeyword_0());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1580:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1581:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1581:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1582:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity3578); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEntityRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1598:2: (otherlv_2= 'extends' ( ( ruleQualifiedName ) ) )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==39) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1598:4: otherlv_2= 'extends' ( ( ruleQualifiedName ) )
                    {
                    otherlv_2=(Token)match(input,39,FOLLOW_39_in_ruleEntity3596); 

                        	newLeafNode(otherlv_2, grammarAccess.getEntityAccess().getExtendsKeyword_2_0());
                        
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1602:1: ( ( ruleQualifiedName ) )
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1603:1: ( ruleQualifiedName )
                    {
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1603:1: ( ruleQualifiedName )
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1604:3: ruleQualifiedName
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEntityRule());
                    	        }
                            
                     
                    	        newCompositeNode(grammarAccess.getEntityAccess().getSuperTypeEntityCrossReference_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleEntity3619);
                    ruleQualifiedName();

                    state._fsp--;

                     
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleEntity3633); 

                	newLeafNode(otherlv_4, grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1621:1: ( (lv_attributes_5_0= ruleAttribute ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==RULE_ID||LA15_0==40) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1622:1: (lv_attributes_5_0= ruleAttribute )
            	    {
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1622:1: (lv_attributes_5_0= ruleAttribute )
            	    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1623:3: lv_attributes_5_0= ruleAttribute
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAttribute_in_ruleEntity3654);
            	    lv_attributes_5_0=ruleAttribute();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEntityRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributes",
            	            		lv_attributes_5_0, 
            	            		"Attribute");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            otherlv_6=(Token)match(input,13,FOLLOW_13_in_ruleEntity3667); 

                	newLeafNode(otherlv_6, grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1651:1: entryRuleAttribute returns [EObject current=null] : iv_ruleAttribute= ruleAttribute EOF ;
    public final EObject entryRuleAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAttribute = null;


        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1652:2: (iv_ruleAttribute= ruleAttribute EOF )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1653:2: iv_ruleAttribute= ruleAttribute EOF
            {
             newCompositeNode(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute3703);
            iv_ruleAttribute=ruleAttribute();

            state._fsp--;

             current =iv_ruleAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute3713); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1660:1: ruleAttribute returns [EObject current=null] : ( ( (lv_many_0_0= 'many' ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleAttribute() throws RecognitionException {
        EObject current = null;

        Token lv_many_0_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1663:28: ( ( ( (lv_many_0_0= 'many' ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( ruleQualifiedName ) ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1664:1: ( ( (lv_many_0_0= 'many' ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( ruleQualifiedName ) ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1664:1: ( ( (lv_many_0_0= 'many' ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( ruleQualifiedName ) ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1664:2: ( (lv_many_0_0= 'many' ) )? ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( ( ruleQualifiedName ) )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1664:2: ( (lv_many_0_0= 'many' ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==40) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1665:1: (lv_many_0_0= 'many' )
                    {
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1665:1: (lv_many_0_0= 'many' )
                    // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1666:3: lv_many_0_0= 'many'
                    {
                    lv_many_0_0=(Token)match(input,40,FOLLOW_40_in_ruleAttribute3756); 

                            newLeafNode(lv_many_0_0, grammarAccess.getAttributeAccess().getManyManyKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAttributeRule());
                    	        }
                           		setWithLastConsumed(current, "many", true, "many");
                    	    

                    }


                    }
                    break;

            }

            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1679:3: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1680:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1680:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1681:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAttribute3787); 

            			newLeafNode(lv_name_1_0, grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,33,FOLLOW_33_in_ruleAttribute3804); 

                	newLeafNode(otherlv_2, grammarAccess.getAttributeAccess().getColonKeyword_2());
                
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1701:1: ( ( ruleQualifiedName ) )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1702:1: ( ruleQualifiedName )
            {
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1702:1: ( ruleQualifiedName )
            // ../org.xtext.example.cbsd/src-gen/org/xtext/example/mydsl/parser/antlr/internal/InternalComponentBasedSoftwareDevelopment.g:1703:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAttributeRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getAttributeAccess().getTypeTypeCrossReference_3_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleAttribute3827);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAttribute"

    // Delegated rules


    protected DFA6 dfa6 = new DFA6(this);
    static final String DFA6_eotS =
        "\14\uffff";
    static final String DFA6_eofS =
        "\14\uffff";
    static final String DFA6_minS =
        "\1\4\1\31\1\uffff\1\4\1\17\1\4\5\uffff\1\17";
    static final String DFA6_maxS =
        "\1\23\1\31\1\uffff\1\4\1\30\1\4\5\uffff\1\30";
    static final String DFA6_acceptS =
        "\2\uffff\1\5\3\uffff\1\6\1\4\1\1\1\3\1\2\1\uffff";
    static final String DFA6_specialS =
        "\14\uffff}>";
    static final String[] DFA6_transitionS = {
            "\1\1\16\uffff\1\2",
            "\1\3",
            "",
            "\1\4",
            "\1\5\1\uffff\1\6\3\uffff\1\7\1\11\1\12\1\10",
            "\1\13",
            "",
            "",
            "",
            "",
            "",
            "\1\5\1\uffff\1\6\3\uffff\1\7\1\11\1\12\1\10"
    };

    static final short[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS);
    static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS);
    static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS);
    static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS);
    static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS);
    static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS);
    static final short[][] DFA6_transition;

    static {
        int numStates = DFA6_transitionS.length;
        DFA6_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA6_transition[i] = DFA.unpackEncodedString(DFA6_transitionS[i]);
        }
    }

    class DFA6 extends DFA {

        public DFA6(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 6;
            this.eot = DFA6_eot;
            this.eof = DFA6_eof;
            this.min = DFA6_min;
            this.max = DFA6_max;
            this.accept = DFA6_accept;
            this.special = DFA6_special;
            this.transition = DFA6_transition;
        }
        public String getDescription() {
            return "400:1: (this_ComponentFollowsConstraint_0= ruleComponentFollowsConstraint | this_ComponentPrecedesConstraint_1= ruleComponentPrecedesConstraint | this_ComponentCausedbyConstraint_2= ruleComponentCausedbyConstraint | this_ComponentLeadstoConstraint_3= ruleComponentLeadstoConstraint | this_ComponentAlternationConstraint_4= ruleComponentAlternationConstraint | this_ComponentBetweenConstraint_5= ruleComponentBetweenConstraint )";
        }
    }
 

    public static final BitSet FOLLOW_ruleMain_in_entryRuleMain75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMain85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_ruleMain130 = new BitSet(new long[]{0x0000006424004812L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_ruleAbstractElement223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponent_in_ruleAbstractElement250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInterface_in_ruleAbstractElement277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleAbstractElement304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentInstance_in_ruleAbstractElement331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageImport_in_ruleAbstractElement358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBindComponents_in_ruleAbstractElement385 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageDeclaration_in_entryRulePackageDeclaration420 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackageDeclaration430 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rulePackageDeclaration467 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackageDeclaration488 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_rulePackageDeclaration500 = new BitSet(new long[]{0x0000006424006810L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_rulePackageDeclaration521 = new BitSet(new long[]{0x0000006424006810L});
    public static final BitSet FOLLOW_13_in_rulePackageDeclaration534 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageImport_in_entryRulePackageImport570 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackageImport580 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rulePackageImport617 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_rulePackageImport638 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName675 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName726 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleQualifiedName745 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName760 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildCard_in_entryRuleQualifiedNameWithWildCard808 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildCard819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildCard866 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_16_in_ruleQualifiedNameWithWildCard885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentStatement_in_entryRuleComponentStatement927 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentStatement937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentFollowsConstraint_in_ruleComponentStatement984 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentPrecedesConstraint_in_ruleComponentStatement1011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentCausedbyConstraint_in_ruleComponentStatement1038 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentLeadstoConstraint_in_ruleComponentStatement1065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentAlternationConstraint_in_ruleComponentStatement1092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentBetweenConstraint_in_ruleComponentStatement1119 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentBetweenConstraint_in_entryRuleComponentBetweenConstraint1154 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentBetweenConstraint1164 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1210 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleComponentBetweenConstraint1222 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1243 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleComponentBetweenConstraint1255 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentBetweenConstraint1276 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentAlternationConstraint_in_entryRuleComponentAlternationConstraint1312 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentAlternationConstraint1322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleComponentAlternationConstraint1359 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentAlternationConstraint1380 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleComponentAlternationConstraint1392 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentAlternationConstraint1413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentLeadstoConstraint_in_entryRuleComponentLeadstoConstraint1449 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentLeadstoConstraint1459 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentLeadstoConstraint1505 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleComponentLeadstoConstraint1517 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentLeadstoConstraint1538 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentCausedbyConstraint_in_entryRuleComponentCausedbyConstraint1574 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentCausedbyConstraint1584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentCausedbyConstraint1630 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleComponentCausedbyConstraint1642 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentCausedbyConstraint1663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentPrecedesConstraint_in_entryRuleComponentPrecedesConstraint1699 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentPrecedesConstraint1709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentPrecedesConstraint1755 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleComponentPrecedesConstraint1767 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentPrecedesConstraint1788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentFollowsConstraint_in_entryRuleComponentFollowsConstraint1824 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentFollowsConstraint1834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentFollowsConstraint1880 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleComponentFollowsConstraint1892 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_ruleComponentFollowsConstraint1913 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentActionStatement_in_entryRuleComponentActionStatement1949 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentActionStatement1959 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleComponentActionStatement2004 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleComponentActionStatement2016 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleComponentActionStatement2039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBindComponents_in_entryRuleBindComponents2075 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBindComponents2085 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleBindComponents2122 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleBindComponents2145 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleBindComponents2157 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleBindComponents2180 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleBindComponents2192 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleBindComponents2215 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleBindComponents2227 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleBindComponents2250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentInstance_in_entryRuleComponentInstance2286 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentInstance2296 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleComponentInstance2338 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleComponentInstance2355 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleComponentInstance2378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponent_in_entryRuleComponent2414 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponent2424 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleComponent2461 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleComponent2478 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleComponent2495 = new BitSet(new long[]{0x00000001C0002000L});
    public static final BitSet FOLLOW_30_in_ruleComponent2509 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleContract_in_ruleComponent2530 = new BitSet(new long[]{0x00000001C0002000L});
    public static final BitSet FOLLOW_31_in_ruleComponent2550 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleContract_in_ruleComponent2571 = new BitSet(new long[]{0x00000001C0002000L});
    public static final BitSet FOLLOW_32_in_ruleComponent2587 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleComponent2599 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_ruleComponentStatement_in_ruleComponent2620 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_13_in_ruleComponent2633 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleComponent2647 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContract_in_entryRuleContract2683 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContract2693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleContract2735 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleContract2752 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleContract2775 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInterface_in_entryRuleInterface2811 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInterface2821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleInterface2858 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleInterface2875 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleInterface2892 = new BitSet(new long[]{0x0000000000002010L});
    public static final BitSet FOLLOW_ruleAction_in_ruleInterface2913 = new BitSet(new long[]{0x0000000000002010L});
    public static final BitSet FOLLOW_13_in_ruleInterface2926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_entryRuleAction2962 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAction2972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleAction3020 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAction3037 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleAction3054 = new BitSet(new long[]{0x0000001000000010L});
    public static final BitSet FOLLOW_ruleParameter_in_ruleAction3076 = new BitSet(new long[]{0x0000001000100000L});
    public static final BitSet FOLLOW_20_in_ruleAction3089 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleParameter_in_ruleAction3110 = new BitSet(new long[]{0x0000001000100000L});
    public static final BitSet FOLLOW_36_in_ruleAction3126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParameter_in_entryRuleParameter3162 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParameter3172 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleParameter3214 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleParameter3231 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleParameter3254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType3290 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType3300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_ruleType3347 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_ruleType3374 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType3409 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDataType3419 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleDataType3456 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDataType3473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity3514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity3524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleEntity3561 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity3578 = new BitSet(new long[]{0x0000008000001000L});
    public static final BitSet FOLLOW_39_in_ruleEntity3596 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEntity3619 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleEntity3633 = new BitSet(new long[]{0x0000010000002010L});
    public static final BitSet FOLLOW_ruleAttribute_in_ruleEntity3654 = new BitSet(new long[]{0x0000010000002010L});
    public static final BitSet FOLLOW_13_in_ruleEntity3667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute3703 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute3713 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleAttribute3756 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAttribute3787 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleAttribute3804 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleAttribute3827 = new BitSet(new long[]{0x0000000000000002L});

}